package com.cy;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.client.loadbalancer.LoadBalancerClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
/*
 * @Description: 方法描述
 * @SpringBootApplication注解描述的类为springboot工程的启动类,这个启动类本质上也是一个配置类,
 * 该配置类在启动时,会读取spring.factories配置文件,进行初始配置
 * @Author: Tedu
 * @Date: 2021/5/31 10:11
 * @Param:
 * @Return:
 */
@EnableFeignClients
@SpringBootApplication
public class NacosConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(NacosConsumerApplication.class, args);

    }
    /*
     * @Description: 方法描述
     * RestTemplate封装了Http请求方式,我们可以通过此对象远程访问另一个http服务;
     *
     *      @Bean:1)用于@Configuration注解描述的方法,
     *      2)将描述的方法创建的第三方对象交给bean池管理
     *      3)Spring 存储这个bean时,默认为bean起的名字为方法名;
     * @Author: Tedu
     * @Date: 2021/5/31 10:24
     * @Param: []
     * @Return: org.springframework.web.client.RestTemplate
     */

    @Bean
    // @LoadBalanced//描述RestTemplate对象时,表示让RestTemplate具备了负载均衡的特性
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

    @Bean
    @LoadBalanced
    public RestTemplate loadBalancedRestTemplate() {
        return new RestTemplate();
    }

}
